/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.folhapgto.app.tablemodel;

import javax.swing.table.AbstractTableModel;
import br.folhapgto.model.Empregado;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Pedro
 */
public class EmpregadoTableModel extends AbstractTableModel{
    private static final int COL_ID = 0;
    private static final int COL_NOME = 1;
    private static final int COL_TIPO = 2;

    private List<Empregado> empregados;

    public EmpregadoTableModel(List<Empregado> empregados)
    {
        this.empregados = new ArrayList<Empregado>(empregados);
    }

    public int getRowCount()
    {
        return empregados.size();
    }

    public int getColumnCount()
    {
        return 3;
    }

    public String getColumnName(int column)
    {
        if (column == COL_ID) return "ID";
        if (column == COL_NOME) return "Nome";
        if (column == COL_TIPO) return "Tipo Contrato";

        return "";
    }

    public Object getValueAt(int row, int column)
    {
        Empregado empregado = empregados.get(row);
        if (column == COL_ID) return empregado.getIdEmpregado();
        else if (column == COL_NOME) return empregado.getNome();
        else if (column == COL_TIPO) 
        {
            switch(empregado.getTipoContrato())
            {
                case 1: return "Assalariado";
                case 2: return "Horista";
            }
        }

        return "";
    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex)
    {
        Empregado empregado = empregados.get(rowIndex);

        if (columnIndex == COL_ID) empregado.setIdEmpregado((Integer.parseInt(aValue.toString())));
        else if (columnIndex == COL_NOME) empregado.setNome(aValue.toString());
        else if (columnIndex == COL_TIPO) empregado.setTipoContrato(Integer.parseInt(aValue.toString()));
    }

    public Class<?> getColumnClass(int columnIndex)
    {
        return String.class;
    }

    public boolean isCellEditable(int rowIndex, int columnIndex)
    {
        return false;
    }

    public Empregado get(int row)
    {
        return empregados.get(row);
    }
}
